home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / emacs.lha / emacs-19.16 / lisp / rot13.el < prev    next >
Lisp/Scheme  |  1993-06-16  |  2KB  |  57 lines

  1. ;;; rot13.el --- display a buffer in rot13.
  2.  
  3. ;; Copyright (C) 1988 Free Software Foundation, Inc.
  4.  
  5. ;; Author: Howard Gayle:
  6. ;; Maintainer: FSF
  7.  
  8. ;; This file is part of GNU Emacs.
  9.  
  10. ;; GNU Emacs is free software; you can redistribute it and/or modify
  11. ;; it under the terms of the GNU General Public License as published by
  12. ;; the Free Software Foundation; either version 2, or (at your option)
  13. ;; any later version.
  14.  
  15. ;; GNU Emacs is distributed in the hope that it will be useful,
  16. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. ;; GNU General Public License for more details.
  19.  
  20. ;; You should have received a copy of the GNU General Public License
  21. ;; along with GNU Emacs; see the file COPYING.  If not, write to
  22. ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  
  24. ;; Commentary:
  25.  
  26. ;; The single entry point, `rot13-other-window', performs a Caesar cipher
  27. ;; encrypt/decrypt on the current buffer and displays the result in another 
  28. ;; window.  Rot13 encryption is sometimes used on USENET as a read-at-your-
  29. ;; own-risk wrapper for material some might consider offensive, such as
  30. ;; ethnic humor.
  31. ;;
  32. ;; Written by Howard Gayle.
  33. ;; This hack is mainly to show off the char table stuff.
  34.  
  35. ;;; Code:
  36.  
  37. (defvar rot13-display-table
  38.   (let ((table (make-display-table))
  39.     (i 0))
  40.     (while (< i 26)
  41.       (aset table (+ i ?a) (vector (+ (% (+ i 13) 26) ?a)))
  42.       (aset table (+ i ?A) (vector (+ (% (+ i 13) 26) ?A)))
  43.       (setq i (1+ i)))
  44.     table)
  45.   "Char table for rot 13 display.")
  46.  
  47. ;;;###autoload
  48. (defun rot13-other-window ()
  49.   "Display current buffer in rot 13 in another window."
  50.   (interactive)
  51.   (let ((w (display-buffer (current-buffer) t)))
  52.     (set-window-display-table w rot13-display-table)))
  53.  
  54. (provide 'rot13)
  55.  
  56. ;;; rot13.el ends here
  57.